package alto_nivel.gals;

import alto_nivel.compilador.Tipo;

public class ItemTabelaSimbolos {

    private String identificador;

    private Tipo tipo;

    private int valorSequencial;

    private Integer valorDeclarado;

    public ItemTabelaSimbolos() {

    }

    public ItemTabelaSimbolos(String id, Tipo tipo, int valorSequencial) {
	identificador = id;
	this.tipo = tipo;
	this.valorSequencial = valorSequencial;
    }

    /**
     * 
     * @return o valor declarativo (nome) do atributo.
     */
    public String getIdentificador() {
	return identificador;
    }

    public void setIdentificador(String identificador) {
	this.identificador = identificador;
    }

    public Tipo getTipo() {
	return tipo;
    }

    public void setTipo(Tipo tipo) {
	this.tipo = tipo;
    }

    /**
     * 
     * @return o valor (inteiro) referente ao número sequencial do atributo/registrador.
     */
    public int getValorSequencial() {
	return valorSequencial;
    }

    public void setValorSequencial(int atributo) {
	valorSequencial = atributo;
    }

    /**
     * Método que retorna o "R + 'valor do registrador'" associado a representação monolítica.
     * 
     * @return representação em R (registrador) de um atributo de alto nível na representação monolítica.
     */
    public String getItemMonolitico() {
	return "R" + valorSequencial;
    }

    public Integer getValorDeclarado() {
	return valorDeclarado;
    }

    public void setValorDeclarado(Integer valorDeclarado) {
	this.valorDeclarado = valorDeclarado;
    }

}
